<!-- 
    new的执行过程
    1.在内存中创建一个空的对象
    2.让this指向这个对象
    3.执行构造函数里面的代码，给这个对象添加属性和方法
    4.返回这个对象(所以构造函数里面不需要return)
 -->

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //1.利用new Object()创建对象
        var obj1 = new Object();

        //利用对象的字面量创建对象
        var obj2 = {};

        //利用构造函数创建对象而不是类
        function Star(uname, age) {
            this.uname = uname;
            this.age = age;
            this.sing = function () {
                console.log('我会唱歌');
            }
        }
        var ldh = new Star('刘德华', 23);

        //1.实例成员就是构造函数内部通过this添加的成员 uname age sing 就是实例成员
        //实例成员只能通过实例化的对象访问
        console.log(ldh.uname);
        ldh.sing();

        // console.log(Star.uname);   //不能通过构造函数来访问实例成员

        //静态成员 在构造函数本身上添加的成员
        Star.sex = '男';   //sex就是静态成员
        console.log(Star.sex);  //静态成员只能通过构造函数来访问

        // console.log(ldh.sex);//静态成员不能通过对象访问


    </script>
</body>

</html>